const fs = require('fs');
//压缩操作
const zlib = require('zlib');

//文件输入流
var fileReadStream = fs.createReadStream('data.json');

//文件输出流
// var fileWriteStream = fs.createWriteStream('data-1.json');

var fileWriteStream = fs.createWriteStream('data.json.gz');

//获取输出流的内容
//写入到gzip的内容
fileWriteStream.on('pipe',(source)=>{
    console.log(source);
})

//1.pipe操作流
//pipe链式调用对流进行进一步处理
fileReadStream
    //输出之前执行压缩操作
    .pipe(zlib.createGzip())
    .pipe(fileWriteStream);

//2.通过手工操作流，也就是触发事件
// var count = 0;
//
// //或者设置chunk.toString()
// fileReadStream.setEncoding('utf8');

// fileReadStream.once('data',(chunk)=>{
//     console.log(chunk);
// })

//每次读取，打印文件内容
// fileReadStream.on('data',(chunk)=>{
//     console.log(`${++count}接收到：${chunk.length}`);
// //    分两次读取到内存中
// //    每次读取长度65536
// //    1接收到：62032
// //     2接收到：58066
//     fileWriteStream.write(chunk);
// })
//
// //读取结束做一个监听,触发回调函数的事件
// fileReadStream.on('end',()=>{
//     console.log('----结束---');
// })
//
// //捕获错误，打印错误信息
// fileReadStream.on('error',(error)=>{
//     console.log(error);
// })